package cn.leelei.hibernate.utils;

import java.util.List;

/**
 * 分页公共类封装
 * 
 * @author Administrator
 *
 */
public class PageInfo<T> {
	private static final Integer DEFULT_SIZE = 10;

	private Integer totalResult;//总记录数
	private Integer totalPage;//总页数
	private List<T> datas;
	private Integer PageNumber;// 当前页数
	private Integer PageSize = DEFULT_SIZE;// 每页条数
	private boolean isFirst;// 是否第一页
	private boolean isLast;// 是否最后一页

	/**
	 * 
	 * 设置当前页
	 * 
	 * @param pageNumber
	 */
	public void setPageNumber(Integer pageNumber) {
		this.PageNumber = pageNumber;
	}

	/**
	 * 设置每页的数据
	 * 
	 * @param pageSize
	 */
	public void setPageSize(Integer pageSize) {
		if (pageSize < 0) {
			this.PageSize = DEFULT_SIZE;

		}
		this.PageSize = pageSize;
	}

	/**
	 * 设置总记录条数
	 * 
	 * @param totalResult
	 */
	public void setTotalResult(Integer totalResult) {
		this.totalResult = totalResult;
		// 总页数
		this.totalPage = totalResult / this.PageSize;
		if (totalResult % this.PageSize != 0) {
			this.totalPage++;
		}
	}

	/**
	 * 获取总记录条数
	 * 
	 * @return
	 */
	public Integer getTotalResult() {
		return totalResult;

	}

	/**
	 * 获取总页数
	 * 
	 * @return
	 */
	public Integer getToalPage() {
		return totalPage;

	}

	/**
	 * 是否第一页
	 * 
	 * @return
	 */
	public boolean getIsFirst() {
		return this.PageNumber == 1;

	}

	/**
	 * 是否最后一页
	 * 
	 * @return
	 */
	public boolean getIsLast() {
		return this.PageNumber == totalPage;

	}

	/**
	 * 设置分页数据
	 * 
	 * @param datas
	 */
	public void setDatas(List<T> datas) {
		this.datas = datas;
	}

	/**
	 * 获得分页的数据
	 * 
	 * @return
	 */
	public List<T> getDatas() {
		return datas;
	}

	/**
	 * 获取分页的起始位置
	 * 
	 * @return
	 */
	public Integer getFirstResult() {
		// 对当前页数据得有效性进行判断
		if (this.PageNumber < 0) {
			this.PageNumber = 1;
		}
		if (this.PageNumber > this.totalPage) {
			this.PageNumber = totalPage;
		}
		return (this.PageNumber - 1) * this.PageSize;
	}
	/**
	 * 获得分页的最大条数
	 * @return
	 */
	public Integer getMaxResult(){
		return PageSize;
		
	}
	/**
	 * TOstring 方法
	 */

	@Override
	public String toString() {
		return "PageInfo [totalResult=" + totalResult + ", totalPage=" + totalPage + ", datas=" + datas
				+ ", PageNumber=" + PageNumber + ", PageSize=" + PageSize + ", isFirst=" + isFirst + ", isLast="
				+ isLast + "]";
	}
	
	

}
